A Refinement Approach for Correct-by-Construction Object-Oriented Programs

نویسندگان

  • Asma Tafat
  • Claude Marché
  • Sylvain Boulmé
چکیده

Refinement is a well-known approach for developing correct-by-construction software. It has been very successful for producing high quality code e.g., as implemented in the B tool. Yet, such refinement techniques are restricted in the sense that they forbid aliasing (and more generally sharing of data-structures), which often happens in usual programming language such as Java and C. We propose a sound approach for refinement in presence of aliases. Suitable abstractions of programs are defined by algebraic data types and the so-called model fields. These are related to concrete program data using coupling invariants. The soundness of the approach relies on methodologies for (1) controlling aliases and (2) checking side-effects, both in a modular way. Key-words: Formal Specification, Deductive verification, Data invariants, Abstraction, Refinement This work is partly supported by INRIA Collaborative Research Action (ARC) “CeProMi”, http://www.lri.fr/cepromi/ ∗ Lab. de Recherche en Informatique, Univ Paris-Sud, CNRS, Orsay, F-91405 † INRIA Saclay Île-de-France, F-91893 ‡ Institut Polytechnique de Grenoble, VERIMAG, Gières, F-38610 in ria -0 04 91 83 5, v er si on 1 14 J un 2 01 0 Une approche par raffinement pour le développement correct de programmes orientés objets Résumé : Le concept de raffinement, notion importante des méthodes formelles, permet le développement de logiciels corrects par construction. Il a été utilisé, avec succès, pour la production de code de haute qualité, par exemple, tel qu’il est implémenté dans l’atelier B. Néanmoins, de telles techniques de raffinement sont restreintes dans le sens où elles interdisent l’aliasing, et plus généralement le partage des structures de données, qui apparaît fréquemment dans les langages de programmation classiques comme C ou Java. On propose une approche sûre pour le raffinement en présence de partage. Des abstractions convenables sont définies par des types de données algébriques et ce qu’on appelle des champs modèles. Ces derniers sont reliés aux données concrêtes à l’aide d’un invariant de collage. La sûreté de notre approche s’appuie sur des méthodes pour (1) le contrôle du partage et ; (2) la gestion des effets de bord ; dans les deux cas de façon modulaire. Mots-clés : Spécification formelle, Vérification par preuve, Invariants de données, Abstraction, Raffinement in ria -0 04 91 83 5, v er si on 1 14 J un 2 01 0 A Refinement Approach for Correct-by-Construction Object-Oriented Programs 3

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

A Seamless Eiffel-Based Refinement Calculus for Object-Oriented Systems

The Eiffel language [4] can be used throughout the object-oriented software development process, for both specification and implementation. We outline work-in-progress on developing a refinement calculus for producing provably correct Eiffel programs from Eiffel specifications. We propose extensions to the calculus by integrating abstract data types as a front-end language that can be used for ...

متن کامل

A Refinement Methodology for Object-Oriented Programs

Refinement is a well-known approach for developing correct-byconstruction software. It has been very successful for producing high quality code e.g., as implemented in the B tool. Yet, such refinement techniques are restricted in the sense that they forbid aliasing (and more generally sharing of data-structures), which often happens in usual programming languages. We propose a sound approach fo...

متن کامل

rCOS: A refinement calculus of object systems

This article presents a mathematical characterization of object-oriented concepts by defining an observation-oriented semantics for a relational objectoriented language with a rich variety of features including subtypes, visibility, inheritance, type casting, dynamic binding and polymorphism. The language is expressive enough for the specification of object-oriented designs and programs. We als...

متن کامل

Refactoring by Transformation

In this paper we present how refactoring of object-oriented programs can be accomplished by using refinement. Our approach is based on algebraic laws of an object-oriented language for refinement similar to Java. We follow a strategy involving data and algorithmic refinement of classes.

متن کامل

Developing Reliable Software using Object - Oriented Formal Specification and Refinement

It is our view that reliability cannot be guaranteed in large, complex software systems unless formal methods are used. The challenge is to bring formal methods up to date with modern object-oriented techniques and make its use as productive as traditional methods. We believe that such a challenge can be met and we have developed the Escher Tool to demonstrate this. This paper describes some of...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2010